﻿using EasyTest.Shared.TestAttribute;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;


namespace ZLGCANoptimize
{
    public class 音源
    {
     
        [ExposedMethodAttribute("")]
        public bool 设置多媒体音量4C1101(int 通道, int 音量, out string 信息, out string data)
        {
            data = "";
            try
            {
                if (!数据.初始化(通道, out ZLGCANHelper zLGCANHelper))
                {
                    信息 = "启动can设备失败";
                    return false;
                }
                _ = zLGCANHelper.RecvData(通道, 0x769, 1000, 100);
                bool OK = Can.解密(通道, new List<ZCAN_Receive_Data>(), out 信息);
                if (!OK)
                {
                    信息 = "解密失败";
                    return false;
                }
                string _音量 = "";//0x01~0x21: Volume level 0~32
                if (音量 < 0)
                {
                    _音量 = "00";
                }
                else if (音量 > 32)
                {
                    _音量 = "21";
                }
                else
                {
                    _音量 = 音量.ToString("X2");
                }
                string 首帧 = $"05 2E 4C 11 01 {_音量} 00 00";//

                /*
                    10 0C 2E 4C 11 01 20 00                 
                */
                bool result1;
                result1 = zLGCANHelper.SentData(通道, 0x761, 首帧, true, SendType.正常发送);
                Thread.Sleep(50);
                if (!result1)
                {
                    信息 = "发送数据失败,设置多媒体音量失败";
                    return false;
                }
                List<ZCAN_Receive_Data> zCAN_Receive_Datas = zLGCANHelper.RecvData(通道, 0x769, 1000);
                string[] datas = ZLGCanTool.GetData(zCAN_Receive_Datas);// 03 6E 4C 10 AA AA AA AA
                data = string.Join(",", datas);
                if (datas.Length > 0)
                {
                    foreach (string s in datas)
                    {
                        //03 6E 4C 11 AA AA AA AA
                        if (s.Trim().StartsWith("03 6E 4C 11"))
                        {
                            信息 = "设置多媒体音量成功";
                            return true;
                        }
                    }
                }
                信息 = "设置多媒体音量失败";
                return false;
            }
            catch (Exception ex)
            {
                信息 = "设置多媒体音量失败" + ex.Message;
                return false;
            }

        }
        [ExposedMethodAttribute("")]
        public bool 设置通话音量4C1103(int 通道, int 音量, out string 信息, out string data)
        {
            data = "";
            try
            {
                if (!数据.初始化(通道, out ZLGCANHelper zLGCANHelper))
                {
                    信息 = "启动can设备失败";
                    return false;
                }
                _ = zLGCANHelper.RecvData(通道, 0x769, 1000, 100);
                bool OK = Can.解密(通道, new List<ZCAN_Receive_Data>(), out 信息);
                if (!OK)
                {
                    信息 = "解密失败";
                    return false;
                }
                string _音量 = "";//0x01~0x21: Volume level 0~32
                if (音量 < 0)
                {
                    _音量 = "00";
                }
                else if (音量 > 32)
                {
                    _音量 = "21";
                }
                else
                {
                    _音量 = 音量.ToString("X2");
                }
                string 首帧 = $"05 2E 4C 11 03 {_音量} 00 00";//

                /*
                    10 0C 2E 4C 11 01 20 00                 
                */
                bool result1;
                result1 = zLGCANHelper.SentData(通道, 0x761, 首帧, true, SendType.正常发送);
                Thread.Sleep(50);
                if (!result1)
                {
                    信息 = "发送数据失败,设置通话音量失败";
                    return false;
                }
                List<ZCAN_Receive_Data> zCAN_Receive_Datas = zLGCANHelper.RecvData(通道, 0x769, 1000);
                string[] datas = ZLGCanTool.GetData(zCAN_Receive_Datas);// 03 6E 4C 10 AA AA AA AA
                data = string.Join(",", datas);
                if (datas.Length > 0)
                {
                    foreach (string s in datas)
                    {
                        //03 6E 4C 11 AA AA AA AA
                        if (s.Trim().StartsWith("03 6E 4C 11"))
                        {
                            信息 = "设置通话音量成功";
                            return true;
                        }
                    }
                }
                信息 = "设置通话音量失败";
                return false;
            }
            catch (Exception ex)
            {
                信息 = "设置通话音量失败" + ex.Message;
                return false;
            }

        }
       
        [ExposedMethodAttribute("")]
        public bool 设置导航音量4C1102(int 通道, int 音量, out string 信息, out string data)
        {
            data = "";
            try
            {
                if (!数据.初始化(通道, out ZLGCANHelper zLGCANHelper))
                {
                    信息 = "启动can设备失败";
                    return false;
                }
                _ = zLGCANHelper.RecvData(通道, 0x769, 1000, 100);
                bool OK = Can.解密(通道, new List<ZCAN_Receive_Data>(), out 信息);
                if (!OK)
                {
                    信息 = "解密失败";
                    return false;
                }
                string _音量 = "";//0x01~0x21: Volume level 0~32
                if (音量 < 0)
                {
                    _音量 = "00";
                }
                else if (音量 > 32)
                {
                    _音量 = "21";
                }
                else
                {
                    _音量 = 音量.ToString("X2");
                }
                string 首帧 = $"05 2E 4C 11 02 {_音量} 00 00";//

                /*
                    10 0C 2E 4C 11 03 20 00               
                */
                bool result1;
                result1 = zLGCANHelper.SentData(通道, 0x761, 首帧, true, SendType.正常发送);
                if (!result1)
                {
                    信息 = "发送数据失败,设置导航音量失败";
                    return false;
                }
                List<ZCAN_Receive_Data> zCAN_Receive_Datas = zLGCANHelper.RecvData(通道, 0x769, 1000);
                string[] datas = ZLGCanTool.GetData(zCAN_Receive_Datas);// 03 6E 4C 10 AA AA AA AA
                data = string.Join(",", datas);
                if (datas.Length > 0)
                {
                    foreach (string s in datas)
                    {
                        //03 6E 4C 11 AA AA AA AA
                        if (s.Trim().StartsWith("03 6E 4C 11"))
                        {
                            信息 = "设置导航音量成功";
                            return true;
                        }
                    }
                }
                信息 = "设置导航音量失败";
            }
            catch (Exception ex)
            {
                信息 = "设置导航音量失败" + ex.Message;
            }
            return false;
        }
    }
}
